Device drivers are programs or routines which control and manage the flow of data to and from input/output (I/O) devices. The drivers form part of and interact with an operating system. An operating system normally includes a basic set of device drivers for I/O devices, such as a keyboard, fixed and floppy disk drives, display, and printer, commonly used with a personal computer. When an I/O device is added to a data processing system, and such device is not operable under an existing driver stored within the data processing system, a new driver must be added to the system in order to use the device. A new driver is customarily supplied by the maker of the I/O device and is installed in the system in accordance with procedures established by the operating system. In personal computers operating with DOS.TM. or OS/2.TM. operating systems, such drivers are installed at start or reboot time, using commands or instructions in a CONFIG.SYS file.
Typically device drivers are created for use with a particular operating system. A device driver written for one operating system cannot be used with another operating system without extensive modifications. Many have tried to find solutions to this dependency problem in order to create a universal device driver. One example is U.S. Pat. No. 5,265,252 to Rawson, III et al., which discloses a device driver, with one part that interfaces with the operating system and a second part that interfaces with the plurality of different operating systems. Rawson's device driver system handles a great variety of different I/O devices with different operating systems. Another example is U.S. Pat. No. 4,975,829 to Clarey et al. Clarey et al. also discloses a device driver that is independent of a computer operating system for communication with peripheral device jobs.
The prior art, as noted above, exhibits an apparent universal connectivity feature with operating systems and peripheral devices whose protocols are preprogrammed into the device driver. However, these device drivers are activated at compile time and thus cannot interact with operating systems or device drivers not previously conceived of during the authoring of the initial device driver. Thus, the systems fail to be truly independent. Also, the prior art fails to address a significant amount of user friendly two-way communication between the operating system and the connected peripheral devices.
Recently, Tektronix and others are linking peripherals to the Internet by writing Hyper-Text Mark Up Language (HTML) software for the peripheral. HTML allows for two-way communication between a connected host and the peripheral. However, the host must include the device driver software to operate with the peripheral. For example, if a user were to print an MS Word document to a printer identified by an addressed site on the Internet or similar type network, the user must first send the document through the device driver associated with this printer. Then the user must utilize a send document function, such as a File Transfer Protocol (FTP) procedure, to efficiently deliver the document to the printer.
As will be readily appreciated from the foregoing summary, the invention provides a dynamic device driver for providing two way communication between a computer operating system and a connected peripheral device at run time.